package _13正则表达式_演示;

/*
普通方式校验字符串：
    判断用户输入的身份证号码是否合法。
    规则为：号码为18位，不能以数字0开头，前17位只可以是数字，最后一位可以是数字或者大写字母X。
 */
public class RegexTest1 {

    public static boolean checkId(String id){

        if(id==null){
            return false;
        }

        //号码为18位.如果不是18位，返回false
        if(id.length()!=18){
            return false;
        }
        //不能以数字0开头，如果以数字0开头，返回false
        if(id.startsWith("0")){
            return false;
        }
        //前17位只可以是数字，如果前17位中有不是数字的，返回false
        for(int i=0; i<17; i++){
            char ch = id.charAt(i);
            if(ch>'9' || ch<'0'){
                return false;
            }
        }

        //最后一位可以是数字或者大写字母X
        char last = id.charAt(17);
        if(last=='X' || (last>='0' && last<='9')){
            return true;
        }else {
            return false;
        }
    }

    //测试
    public static void main(String[] args) {
        System.out.println( checkId("445221199909091234") );
        System.out.println( checkId("44522119990909123X") );
        System.out.println( checkId("44522119990909123") );
        System.out.println( checkId("4452211999090912345") );
        System.out.println( checkId("045221199909091234") );
        System.out.println( checkId("4452A1199909091234") );
        System.out.println( checkId("44522119990909123x") );
    }



}
